#ifndef NctiRenderItem_H
#define NctiRenderItem_H
#include "NctiRenderObject.h"
namespace NCTI
{
	class NctiRenderSegmentItem;

    /**
     * @brief Render Item Base Class
     * @details the base class of render item
     * @see NctiRenderGeometryItem,NctiRenderSegmentItem
     */
	class DECL_NCTI_RENDER NctiRenderItem : public NctiRenderObject
	{
		NCTI_RENDER_FUNCTIONS(NctiRenderItem)
	public:
        /**
        * @brief construct the render item
        * @note default set m_deafaultValid to true
        * @see NctiRenderObject,NctiRenderGeometryItem,NctiRenderSegmentItem
        */
		NctiRenderItem();
		virtual ~NctiRenderItem();

        /**
        * @brief move this to the NctiRenderSegmentItem
        * @see NctiRenderGeometryItem,NctiRenderSegmentItem
        */
		void MoveTo(NctiRenderSegmentItem* i_pRenderSegmentItem);

        /**
        * @brief the the display object for the render object
        * @param[in] i_pDObj the object in user interface
        * @see NctiDisplayObject
        */
        void SetDisplayObject(void* i_pDObj);

        /**
        * @brief get the display object for the render object
        * @return the display object
        * @see NctiDisplayObject
        */
        void* GetDisplayObject();

    private:
        void* m_DisplayObject;
	};
}
#endif
